<?php

$rh = $this->ctx->rh;
$module = $this->parent->module;

$aa = $module->aa;
$acl_data = $aa->getInfo();
$aa->getAvailableOperations();

$m_user = $this->ctx->mm->getModel("User", "m");
$model = $this->ctx->mm->getModel("OpenId", "m");

$user_oid = $params['user_url'];
$user_obj = $m_user->getUser( $user_oid );
if (empty($user_oid) || empty($user_obj)) return;

$rh->UseClass("Form_Form");

$form = &new Form( $rh,
	array(
		"auto_user_id"  => 0,
		"template_form"	=> "form:Form",
		"template_buttonlist" => "form:Buttons",
		"db_table" => 'auth_other', // это id формы
	),
	$widget_url,
	NULL // дефолтные шаблонные переменные, если таковые есть в шаблонах
);

$doctype = array(
	"typename" => "Настройки сообщества",
	"fields" => array(
		"openid_url" => array(
			// параметры бд
			"db_type" => "string",
			"db_size" => 255,
			'model_default' => 'http://',

			// параметры рендеринга форм, один в один параметры поля для формпроцессора
			"interface_tpl" => "string:Plain", // само поле

			"wrapper_tpl" => "wrapper:TextWrapper", // обертка вокруг поля при создании итема
			"wrapper_title" => "openid",
			"wrapper_desc" => "хотите регистрироваться под разными OpenId?",

			//'validator' => 'validator_url',
			"validator_params"=> array("not_empty"=>1,),  // пустое-не пустое?
		),
	),
	'buttons' => array(
		// у каждой формы две кнопки
		'ok' => array(
			"event" => FORM_EVENT_OK,
			"title" => "Okay",
			"template" => "Submit",
		),
	),
);

foreach ($doctype['fields'] as $field_name=>$field_config) {
	$form->AddField( $field_name, $field_config );
}
foreach ($doctype['buttons'] as $button_name=>$button_config) {
	$form->AddButton( $button_config );
}

require_once 'RL/Principal.php';

if (($form_content = $form->Handle(false, NULL, NULL, NULL, false)) === false) {
	$auth_input = new RL_Principal_Input_Array(array(
		'openid_url'=>$form->hash['openid_url']->model->model_data,
		'openid_action'=>'login',
	));
} elseif ($_GET['openid_mode'] == 'id_res') {
	$auth_input = new RL_Principal_Input_Array(array(
		'openid_url'=>$form->hash['url']->model->model_data,
	));
} else {
	$auth_input = NULL;
}

if ($auth_input) {
	$auth_method = new RL_Principal_Auth_Openid(array(
		'trust_url'  => $rh->base_url,
	));

	if ($cred = $auth_method->identify($auth_input)) {
		$data = $auth_method->getProfile();


		if ($model->add_openid_to_user($user_obj, $data['signed']['identity'])) {
			echo "Ваш профиль обновлен";
		} else {
			echo "some kind of error in updating db entries.";
		}
	} else {
		var_dump( $auth_method->error);
	}
	$up_url = $parent->getUrl();
	$rh->redirect($rh->base_url.$up_url);
} else {
	$rs = $model->get_openid_for_user($user_obj);
	echo '<ul>';
	while($row = $rs->next()) {
		echo "<li><a href=\"{$row['openid']}\">{$row['openid']}</a></li>";
	}
	echo '</ul>';
	echo $form_content;
}


